home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 19 / Mac Magazin and MacEasy Magazine CD - Issue 19.iso / Utilities / uae-0.4 / Source Code / CPU Sources / cpuB.c < prev    next >
C/C++ Source or Header  |  1996-02-13  |  40KB  |  1,360 lines

  1. #include "config.h"
  2. #include "amiga.h"
  3. #include "options.h"
  4. #include <stdlib.h>
  5. #include "memory.h"
  6. #include "custom.h"
  7. #include "newcpu.h"
  8. #include "cputbl.h"
  9. void op_b000(UWORD opcode)
  10. {
  11.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  12.     ULONG dstreg = (opcode & 3584) >> 9;
  13. {{    BYTE src = regs.d[srcreg];
  14. {    BYTE dst = regs.d[dstreg];
  15. {    ULONG newv = dst - src;
  16. {    bool flgs = ((BYTE)(src)) < 0;
  17.     bool flgo = ((BYTE)(dst)) < 0;
  18.     bool flgn = ((BYTE)(newv)) < 0;
  19.     regs.z = ((BYTE)(newv)) == 0;
  20.     regs.v = (flgs != flgo) && (flgn != flgo);
  21.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  22.     regs.n = flgn != 0;
  23. }}}}}}
  24. void op_b010(UWORD opcode)
  25. {
  26.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  27.     ULONG dstreg = (opcode & 3584) >> 9;
  28. {{    CPTR srca = regs.a[srcreg];
  29.     BYTE src = get_byte(srca);
  30. {    BYTE dst = regs.d[dstreg];
  31. {    ULONG newv = dst - src;
  32. {    bool flgs = ((BYTE)(src)) < 0;
  33.     bool flgo = ((BYTE)(dst)) < 0;
  34.     bool flgn = ((BYTE)(newv)) < 0;
  35.     regs.z = ((BYTE)(newv)) == 0;
  36.     regs.v = (flgs != flgo) && (flgn != flgo);
  37.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  38.     regs.n = flgn != 0;
  39. }}}}}}
  40. void op_b018(UWORD opcode)
  41. {
  42.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  43.     ULONG dstreg = (opcode & 3584) >> 9;
  44. {{    CPTR srca = regs.a[srcreg];
  45.     BYTE src = get_byte(srca);
  46. {    regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
  47. {    BYTE dst = regs.d[dstreg];
  48. {    ULONG newv = dst - src;
  49. {    bool flgs = ((BYTE)(src)) < 0;
  50.     bool flgo = ((BYTE)(dst)) < 0;
  51.     bool flgn = ((BYTE)(newv)) < 0;
  52.     regs.z = ((BYTE)(newv)) == 0;
  53.     regs.v = (flgs != flgo) && (flgn != flgo);
  54.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  55.     regs.n = flgn != 0;
  56. }}}}}}}
  57. void op_b020(UWORD opcode)
  58. {
  59.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  60.     ULONG dstreg = (opcode & 3584) >> 9;
  61. {{    regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
  62. {    CPTR srca = regs.a[srcreg];
  63.     BYTE src = get_byte(srca);
  64. {    BYTE dst = regs.d[dstreg];
  65. {    ULONG newv = dst - src;
  66. {    bool flgs = ((BYTE)(src)) < 0;
  67.     bool flgo = ((BYTE)(dst)) < 0;
  68.     bool flgn = ((BYTE)(newv)) < 0;
  69.     regs.z = ((BYTE)(newv)) == 0;
  70.     regs.v = (flgs != flgo) && (flgn != flgo);
  71.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  72.     regs.n = flgn != 0;
  73. }}}}}}}
  74. void op_b028(UWORD opcode)
  75. {
  76.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  77.     ULONG dstreg = (opcode & 3584) >> 9;
  78. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  79.     BYTE src = get_byte(srca);
  80. {    BYTE dst = regs.d[dstreg];
  81. {    ULONG newv = dst - src;
  82. {    bool flgs = ((BYTE)(src)) < 0;
  83.     bool flgo = ((BYTE)(dst)) < 0;
  84.     bool flgn = ((BYTE)(newv)) < 0;
  85.     regs.z = ((BYTE)(newv)) == 0;
  86.     regs.v = (flgs != flgo) && (flgn != flgo);
  87.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  88.     regs.n = flgn != 0;
  89. }}}}}}
  90. void op_b030(UWORD opcode)
  91. {
  92.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  93.     ULONG dstreg = (opcode & 3584) >> 9;
  94. {{    CPTR srca = regs.a[srcreg];
  95.     UWORD srcdp = nextiword();
  96.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  97. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  98.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  99.     srca += srcdpr;
  100. {    BYTE src = get_byte(srca);
  101. {    BYTE dst = regs.d[dstreg];
  102. {    ULONG newv = dst - src;
  103. {    bool flgs = ((BYTE)(src)) < 0;
  104.     bool flgo = ((BYTE)(dst)) < 0;
  105.     bool flgn = ((BYTE)(newv)) < 0;
  106.     regs.z = ((BYTE)(newv)) == 0;
  107.     regs.v = (flgs != flgo) && (flgn != flgo);
  108.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  109.     regs.n = flgn != 0;
  110. }}}}}}}}
  111. void op_b038(UWORD opcode)
  112. {
  113.     ULONG dstreg = (opcode & 3584) >> 9;
  114. {{    CPTR srca = (LONG)(WORD)nextiword();
  115.     BYTE src = get_byte(srca);
  116. {    BYTE dst = regs.d[dstreg];
  117. {    ULONG newv = dst - src;
  118. {    bool flgs = ((BYTE)(src)) < 0;
  119.     bool flgo = ((BYTE)(dst)) < 0;
  120.     bool flgn = ((BYTE)(newv)) < 0;
  121.     regs.z = ((BYTE)(newv)) == 0;
  122.     regs.v = (flgs != flgo) && (flgn != flgo);
  123.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  124.     regs.n = flgn != 0;
  125. }}}}}}
  126. void op_b039(UWORD opcode)
  127. {
  128.     ULONG dstreg = (opcode & 3584) >> 9;
  129. {{    CPTR srca = nextilong();
  130.     BYTE src = get_byte(srca);
  131. {    BYTE dst = regs.d[dstreg];
  132. {    ULONG newv = dst - src;
  133. {    bool flgs = ((BYTE)(src)) < 0;
  134.     bool flgo = ((BYTE)(dst)) < 0;
  135.     bool flgn = ((BYTE)(newv)) < 0;
  136.     regs.z = ((BYTE)(newv)) == 0;
  137.     regs.v = (flgs != flgo) && (flgn != flgo);
  138.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  139.     regs.n = flgn != 0;
  140. }}}}}}
  141. void op_b03a(UWORD opcode)
  142. {
  143.     ULONG dstreg = (opcode & 3584) >> 9;
  144. {{    CPTR srca = m68k_getpc();
  145.     srca += (LONG)(WORD)nextiword();
  146. {    BYTE src = get_byte(srca);
  147. {    BYTE dst = regs.d[dstreg];
  148. {    ULONG newv = dst - src;
  149. {    bool flgs = ((BYTE)(src)) < 0;
  150.     bool flgo = ((BYTE)(dst)) < 0;
  151.     bool flgn = ((BYTE)(newv)) < 0;
  152.     regs.z = ((BYTE)(newv)) == 0;
  153.     regs.v = (flgs != flgo) && (flgn != flgo);
  154.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  155.     regs.n = flgn != 0;
  156. }}}}}}}
  157. void op_b03b(UWORD opcode)
  158. {
  159.     ULONG dstreg = (opcode & 3584) >> 9;
  160. {{    CPTR srca = m68k_getpc();
  161.     UWORD srcdp = nextiword();
  162.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  163. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  164.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  165.     srca += srcdpr;
  166. {    BYTE src = get_byte(srca);
  167. {    BYTE dst = regs.d[dstreg];
  168. {    ULONG newv = dst - src;
  169. {    bool flgs = ((BYTE)(src)) < 0;
  170.     bool flgo = ((BYTE)(dst)) < 0;
  171.     bool flgn = ((BYTE)(newv)) < 0;
  172.     regs.z = ((BYTE)(newv)) == 0;
  173.     regs.v = (flgs != flgo) && (flgn != flgo);
  174.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  175.     regs.n = flgn != 0;
  176. }}}}}}}}
  177. void op_b03c(UWORD opcode)
  178. {
  179.     ULONG dstreg = (opcode & 3584) >> 9;
  180. {{    BYTE src = nextiword();
  181. {    BYTE dst = regs.d[dstreg];
  182. {    ULONG newv = dst - src;
  183. {    bool flgs = ((BYTE)(src)) < 0;
  184.     bool flgo = ((BYTE)(dst)) < 0;
  185.     bool flgn = ((BYTE)(newv)) < 0;
  186.     regs.z = ((BYTE)(newv)) == 0;
  187.     regs.v = (flgs != flgo) && (flgn != flgo);
  188.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  189.     regs.n = flgn != 0;
  190. }}}}}}
  191. void op_b040(UWORD opcode)
  192. {
  193.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  194.     ULONG dstreg = (opcode & 3584) >> 9;
  195. {{    WORD src = regs.d[srcreg];
  196. {    WORD dst = regs.d[dstreg];
  197. {    ULONG newv = dst - src;
  198. {    bool flgs = ((WORD)(src)) < 0;
  199.     bool flgo = ((WORD)(dst)) < 0;
  200.     bool flgn = ((WORD)(newv)) < 0;
  201.     regs.z = ((WORD)(newv)) == 0;
  202.     regs.v = (flgs != flgo) && (flgn != flgo);
  203.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  204.     regs.n = flgn != 0;
  205. }}}}}}
  206. void op_b048(UWORD opcode)
  207. {
  208.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  209.     ULONG dstreg = (opcode & 3584) >> 9;
  210. {{    WORD src = regs.a[srcreg];
  211. {    WORD dst = regs.d[dstreg];
  212. {    ULONG newv = dst - src;
  213. {    bool flgs = ((WORD)(src)) < 0;
  214.     bool flgo = ((WORD)(dst)) < 0;
  215.     bool flgn = ((WORD)(newv)) < 0;
  216.     regs.z = ((WORD)(newv)) == 0;
  217.     regs.v = (flgs != flgo) && (flgn != flgo);
  218.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  219.     regs.n = flgn != 0;
  220. }}}}}}
  221. void op_b050(UWORD opcode)
  222. {
  223.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  224.     ULONG dstreg = (opcode & 3584) >> 9;
  225. {{    CPTR srca = regs.a[srcreg];
  226.     WORD src = get_word(srca);
  227. {    WORD dst = regs.d[dstreg];
  228. {    ULONG newv = dst - src;
  229. {    bool flgs = ((WORD)(src)) < 0;
  230.     bool flgo = ((WORD)(dst)) < 0;
  231.     bool flgn = ((WORD)(newv)) < 0;
  232.     regs.z = ((WORD)(newv)) == 0;
  233.     regs.v = (flgs != flgo) && (flgn != flgo);
  234.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  235.     regs.n = flgn != 0;
  236. }}}}}}
  237. void op_b058(UWORD opcode)
  238. {
  239.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  240.     ULONG dstreg = (opcode & 3584) >> 9;
  241. {{    CPTR srca = regs.a[srcreg];
  242.     WORD src = get_word(srca);
  243. {    regs.a[srcreg] += 2;
  244. {    WORD dst = regs.d[dstreg];
  245. {    ULONG newv = dst - src;
  246. {    bool flgs = ((WORD)(src)) < 0;
  247.     bool flgo = ((WORD)(dst)) < 0;
  248.     bool flgn = ((WORD)(newv)) < 0;
  249.     regs.z = ((WORD)(newv)) == 0;
  250.     regs.v = (flgs != flgo) && (flgn != flgo);
  251.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  252.     regs.n = flgn != 0;
  253. }}}}}}}
  254. void op_b060(UWORD opcode)
  255. {
  256.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  257.     ULONG dstreg = (opcode & 3584) >> 9;
  258. {{    regs.a[srcreg] -= 2;
  259. {    CPTR srca = regs.a[srcreg];
  260.     WORD src = get_word(srca);
  261. {    WORD dst = regs.d[dstreg];
  262. {    ULONG newv = dst - src;
  263. {    bool flgs = ((WORD)(src)) < 0;
  264.     bool flgo = ((WORD)(dst)) < 0;
  265.     bool flgn = ((WORD)(newv)) < 0;
  266.     regs.z = ((WORD)(newv)) == 0;
  267.     regs.v = (flgs != flgo) && (flgn != flgo);
  268.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  269.     regs.n = flgn != 0;
  270. }}}}}}}
  271. void op_b068(UWORD opcode)
  272. {
  273.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  274.     ULONG dstreg = (opcode & 3584) >> 9;
  275. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  276.     WORD src = get_word(srca);
  277. {    WORD dst = regs.d[dstreg];
  278. {    ULONG newv = dst - src;
  279. {    bool flgs = ((WORD)(src)) < 0;
  280.     bool flgo = ((WORD)(dst)) < 0;
  281.     bool flgn = ((WORD)(newv)) < 0;
  282.     regs.z = ((WORD)(newv)) == 0;
  283.     regs.v = (flgs != flgo) && (flgn != flgo);
  284.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  285.     regs.n = flgn != 0;
  286. }}}}}}
  287. void op_b070(UWORD opcode)
  288. {
  289.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  290.     ULONG dstreg = (opcode & 3584) >> 9;
  291. {{    CPTR srca = regs.a[srcreg];
  292.     UWORD srcdp = nextiword();
  293.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  294. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  295.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  296.     srca += srcdpr;
  297. {    WORD src = get_word(srca);
  298. {    WORD dst = regs.d[dstreg];
  299. {    ULONG newv = dst - src;
  300. {    bool flgs = ((WORD)(src)) < 0;
  301.     bool flgo = ((WORD)(dst)) < 0;
  302.     bool flgn = ((WORD)(newv)) < 0;
  303.     regs.z = ((WORD)(newv)) == 0;
  304.     regs.v = (flgs != flgo) && (flgn != flgo);
  305.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  306.     regs.n = flgn != 0;
  307. }}}}}}}}
  308. void op_b078(UWORD opcode)
  309. {
  310.     ULONG dstreg = (opcode & 3584) >> 9;
  311. {{    CPTR srca = (LONG)(WORD)nextiword();
  312.     WORD src = get_word(srca);
  313. {    WORD dst = regs.d[dstreg];
  314. {    ULONG newv = dst - src;
  315. {    bool flgs = ((WORD)(src)) < 0;
  316.     bool flgo = ((WORD)(dst)) < 0;
  317.     bool flgn = ((WORD)(newv)) < 0;
  318.     regs.z = ((WORD)(newv)) == 0;
  319.     regs.v = (flgs != flgo) && (flgn != flgo);
  320.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  321.     regs.n = flgn != 0;
  322. }}}}}}
  323. void op_b079(UWORD opcode)
  324. {
  325.     ULONG dstreg = (opcode & 3584) >> 9;
  326. {{    CPTR srca = nextilong();
  327.     WORD src = get_word(srca);
  328. {    WORD dst = regs.d[dstreg];
  329. {    ULONG newv = dst - src;
  330. {    bool flgs = ((WORD)(src)) < 0;
  331.     bool flgo = ((WORD)(dst)) < 0;
  332.     bool flgn = ((WORD)(newv)) < 0;
  333.     regs.z = ((WORD)(newv)) == 0;
  334.     regs.v = (flgs != flgo) && (flgn != flgo);
  335.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  336.     regs.n = flgn != 0;
  337. }}}}}}
  338. void op_b07a(UWORD opcode)
  339. {
  340.     ULONG dstreg = (opcode & 3584) >> 9;
  341. {{    CPTR srca = m68k_getpc();
  342.     srca += (LONG)(WORD)nextiword();
  343. {    WORD src = get_word(srca);
  344. {    WORD dst = regs.d[dstreg];
  345. {    ULONG newv = dst - src;
  346. {    bool flgs = ((WORD)(src)) < 0;
  347.     bool flgo = ((WORD)(dst)) < 0;
  348.     bool flgn = ((WORD)(newv)) < 0;
  349.     regs.z = ((WORD)(newv)) == 0;
  350.     regs.v = (flgs != flgo) && (flgn != flgo);
  351.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  352.     regs.n = flgn != 0;
  353. }}}}}}}
  354. void op_b07b(UWORD opcode)
  355. {
  356.     ULONG dstreg = (opcode & 3584) >> 9;
  357. {{    CPTR srca = m68k_getpc();
  358.     UWORD srcdp = nextiword();
  359.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  360. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  361.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  362.     srca += srcdpr;
  363. {    WORD src = get_word(srca);
  364. {    WORD dst = regs.d[dstreg];
  365. {    ULONG newv = dst - src;
  366. {    bool flgs = ((WORD)(src)) < 0;
  367.     bool flgo = ((WORD)(dst)) < 0;
  368.     bool flgn = ((WORD)(newv)) < 0;
  369.     regs.z = ((WORD)(newv)) == 0;
  370.     regs.v = (flgs != flgo) && (flgn != flgo);
  371.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  372.     regs.n = flgn != 0;
  373. }}}}}}}}
  374. void op_b07c(UWORD opcode)
  375. {
  376.     ULONG dstreg = (opcode & 3584) >> 9;
  377. {{    WORD src = nextiword();
  378. {    WORD dst = regs.d[dstreg];
  379. {    ULONG newv = dst - src;
  380. {    bool flgs = ((WORD)(src)) < 0;
  381.     bool flgo = ((WORD)(dst)) < 0;
  382.     bool flgn = ((WORD)(newv)) < 0;
  383.     regs.z = ((WORD)(newv)) == 0;
  384.     regs.v = (flgs != flgo) && (flgn != flgo);
  385.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  386.     regs.n = flgn != 0;
  387. }}}}}}
  388. void op_b080(UWORD opcode)
  389. {
  390.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  391.     ULONG dstreg = (opcode & 3584) >> 9;
  392. {{    LONG src = regs.d[srcreg];
  393. {    LONG dst = regs.d[dstreg];
  394. {    ULONG newv = dst - src;
  395. {    bool flgs = ((LONG)(src)) < 0;
  396.     bool flgo = ((LONG)(dst)) < 0;
  397.     bool flgn = ((LONG)(newv)) < 0;
  398.     regs.z = ((LONG)(newv)) == 0;
  399.     regs.v = (flgs != flgo) && (flgn != flgo);
  400.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  401.     regs.n = flgn != 0;
  402. }}}}}}
  403. void op_b088(UWORD opcode)
  404. {
  405.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  406.     ULONG dstreg = (opcode & 3584) >> 9;
  407. {{    LONG src = regs.a[srcreg];
  408. {    LONG dst = regs.d[dstreg];
  409. {    ULONG newv = dst - src;
  410. {    bool flgs = ((LONG)(src)) < 0;
  411.     bool flgo = ((LONG)(dst)) < 0;
  412.     bool flgn = ((LONG)(newv)) < 0;
  413.     regs.z = ((LONG)(newv)) == 0;
  414.     regs.v = (flgs != flgo) && (flgn != flgo);
  415.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  416.     regs.n = flgn != 0;
  417. }}}}}}
  418. void op_b090(UWORD opcode)
  419. {
  420.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  421.     ULONG dstreg = (opcode & 3584) >> 9;
  422. {{    CPTR srca = regs.a[srcreg];
  423.     LONG src = get_long(srca);
  424. {    LONG dst = regs.d[dstreg];
  425. {    ULONG newv = dst - src;
  426. {    bool flgs = ((LONG)(src)) < 0;
  427.     bool flgo = ((LONG)(dst)) < 0;
  428.     bool flgn = ((LONG)(newv)) < 0;
  429.     regs.z = ((LONG)(newv)) == 0;
  430.     regs.v = (flgs != flgo) && (flgn != flgo);
  431.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  432.     regs.n = flgn != 0;
  433. }}}}}}
  434. void op_b098(UWORD opcode)
  435. {
  436.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  437.     ULONG dstreg = (opcode & 3584) >> 9;
  438. {{    CPTR srca = regs.a[srcreg];
  439.     LONG src = get_long(srca);
  440. {    regs.a[srcreg] += 4;
  441. {    LONG dst = regs.d[dstreg];
  442. {    ULONG newv = dst - src;
  443. {    bool flgs = ((LONG)(src)) < 0;
  444.     bool flgo = ((LONG)(dst)) < 0;
  445.     bool flgn = ((LONG)(newv)) < 0;
  446.     regs.z = ((LONG)(newv)) == 0;
  447.     regs.v = (flgs != flgo) && (flgn != flgo);
  448.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  449.     regs.n = flgn != 0;
  450. }}}}}}}
  451. void op_b0a0(UWORD opcode)
  452. {
  453.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  454.     ULONG dstreg = (opcode & 3584) >> 9;
  455. {{    regs.a[srcreg] -= 4;
  456. {    CPTR srca = regs.a[srcreg];
  457.     LONG src = get_long(srca);
  458. {    LONG dst = regs.d[dstreg];
  459. {    ULONG newv = dst - src;
  460. {    bool flgs = ((LONG)(src)) < 0;
  461.     bool flgo = ((LONG)(dst)) < 0;
  462.     bool flgn = ((LONG)(newv)) < 0;
  463.     regs.z = ((LONG)(newv)) == 0;
  464.     regs.v = (flgs != flgo) && (flgn != flgo);
  465.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  466.     regs.n = flgn != 0;
  467. }}}}}}}
  468. void op_b0a8(UWORD opcode)
  469. {
  470.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  471.     ULONG dstreg = (opcode & 3584) >> 9;
  472. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  473.     LONG src = get_long(srca);
  474. {    LONG dst = regs.d[dstreg];
  475. {    ULONG newv = dst - src;
  476. {    bool flgs = ((LONG)(src)) < 0;
  477.     bool flgo = ((LONG)(dst)) < 0;
  478.     bool flgn = ((LONG)(newv)) < 0;
  479.     regs.z = ((LONG)(newv)) == 0;
  480.     regs.v = (flgs != flgo) && (flgn != flgo);
  481.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  482.     regs.n = flgn != 0;
  483. }}}}}}
  484. void op_b0b0(UWORD opcode)
  485. {
  486.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  487.     ULONG dstreg = (opcode & 3584) >> 9;
  488. {{    CPTR srca = regs.a[srcreg];
  489.     UWORD srcdp = nextiword();
  490.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  491. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  492.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  493.     srca += srcdpr;
  494. {    LONG src = get_long(srca);
  495. {    LONG dst = regs.d[dstreg];
  496. {    ULONG newv = dst - src;
  497. {    bool flgs = ((LONG)(src)) < 0;
  498.     bool flgo = ((LONG)(dst)) < 0;
  499.     bool flgn = ((LONG)(newv)) < 0;
  500.     regs.z = ((LONG)(newv)) == 0;
  501.     regs.v = (flgs != flgo) && (flgn != flgo);
  502.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  503.     regs.n = flgn != 0;
  504. }}}}}}}}
  505. void op_b0b8(UWORD opcode)
  506. {
  507.     ULONG dstreg = (opcode & 3584) >> 9;
  508. {{    CPTR srca = (LONG)(WORD)nextiword();
  509.     LONG src = get_long(srca);
  510. {    LONG dst = regs.d[dstreg];
  511. {    ULONG newv = dst - src;
  512. {    bool flgs = ((LONG)(src)) < 0;
  513.     bool flgo = ((LONG)(dst)) < 0;
  514.     bool flgn = ((LONG)(newv)) < 0;
  515.     regs.z = ((LONG)(newv)) == 0;
  516.     regs.v = (flgs != flgo) && (flgn != flgo);
  517.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  518.     regs.n = flgn != 0;
  519. }}}}}}
  520. void op_b0b9(UWORD opcode)
  521. {
  522.     ULONG dstreg = (opcode & 3584) >> 9;
  523. {{    CPTR srca = nextilong();
  524.     LONG src = get_long(srca);
  525. {    LONG dst = regs.d[dstreg];
  526. {    ULONG newv = dst - src;
  527. {    bool flgs = ((LONG)(src)) < 0;
  528.     bool flgo = ((LONG)(dst)) < 0;
  529.     bool flgn = ((LONG)(newv)) < 0;
  530.     regs.z = ((LONG)(newv)) == 0;
  531.     regs.v = (flgs != flgo) && (flgn != flgo);
  532.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  533.     regs.n = flgn != 0;
  534. }}}}}}
  535. void op_b0ba(UWORD opcode)
  536. {
  537.     ULONG dstreg = (opcode & 3584) >> 9;
  538. {{    CPTR srca = m68k_getpc();
  539.     srca += (LONG)(WORD)nextiword();
  540. {    LONG src = get_long(srca);
  541. {    LONG dst = regs.d[dstreg];
  542. {    ULONG newv = dst - src;
  543. {    bool flgs = ((LONG)(src)) < 0;
  544.     bool flgo = ((LONG)(dst)) < 0;
  545.     bool flgn = ((LONG)(newv)) < 0;
  546.     regs.z = ((LONG)(newv)) == 0;
  547.     regs.v = (flgs != flgo) && (flgn != flgo);
  548.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  549.     regs.n = flgn != 0;
  550. }}}}}}}
  551. void op_b0bb(UWORD opcode)
  552. {
  553.     ULONG dstreg = (opcode & 3584) >> 9;
  554. {{    CPTR srca = m68k_getpc();
  555.     UWORD srcdp = nextiword();
  556.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  557. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  558.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  559.     srca += srcdpr;
  560. {    LONG src = get_long(srca);
  561. {    LONG dst = regs.d[dstreg];
  562. {    ULONG newv = dst - src;
  563. {    bool flgs = ((LONG)(src)) < 0;
  564.     bool flgo = ((LONG)(dst)) < 0;
  565.     bool flgn = ((LONG)(newv)) < 0;
  566.     regs.z = ((LONG)(newv)) == 0;
  567.     regs.v = (flgs != flgo) && (flgn != flgo);
  568.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  569.     regs.n = flgn != 0;
  570. }}}}}}}}
  571. void op_b0bc(UWORD opcode)
  572. {
  573.     ULONG dstreg = (opcode & 3584) >> 9;
  574. {{    LONG src = nextilong();
  575. {    LONG dst = regs.d[dstreg];
  576. {    ULONG newv = dst - src;
  577. {    bool flgs = ((LONG)(src)) < 0;
  578.     bool flgo = ((LONG)(dst)) < 0;
  579.     bool flgn = ((LONG)(newv)) < 0;
  580.     regs.z = ((LONG)(newv)) == 0;
  581.     regs.v = (flgs != flgo) && (flgn != flgo);
  582.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  583.     regs.n = flgn != 0;
  584. }}}}}}
  585. void op_b0c0(UWORD opcode)
  586. {
  587.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  588.     ULONG dstreg = (opcode & 3584) >> 9;
  589. {{    WORD src = regs.d[srcreg];
  590. {    LONG dst = regs.a[dstreg];
  591. {    ULONG newv = dst - src;
  592. {    bool flgs = ((LONG)(src)) < 0;
  593.     bool flgo = ((LONG)(dst)) < 0;
  594.     bool flgn = ((LONG)(newv)) < 0;
  595.     regs.z = ((LONG)(newv)) == 0;
  596.     regs.v = (flgs != flgo) && (flgn != flgo);
  597.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  598.     regs.n = flgn != 0;
  599. }}}}}}
  600. void op_b0c8(UWORD opcode)
  601. {
  602.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  603.     ULONG dstreg = (opcode & 3584) >> 9;
  604. {{    WORD src = regs.a[srcreg];
  605. {    LONG dst = regs.a[dstreg];
  606. {    ULONG newv = dst - src;
  607. {    bool flgs = ((LONG)(src)) < 0;
  608.     bool flgo = ((LONG)(dst)) < 0;
  609.     bool flgn = ((LONG)(newv)) < 0;
  610.     regs.z = ((LONG)(newv)) == 0;
  611.     regs.v = (flgs != flgo) && (flgn != flgo);
  612.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  613.     regs.n = flgn != 0;
  614. }}}}}}
  615. void op_b0d0(UWORD opcode)
  616. {
  617.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  618.     ULONG dstreg = (opcode & 3584) >> 9;
  619. {{    CPTR srca = regs.a[srcreg];
  620.     WORD src = get_word(srca);
  621. {    LONG dst = regs.a[dstreg];
  622. {    ULONG newv = dst - src;
  623. {    bool flgs = ((LONG)(src)) < 0;
  624.     bool flgo = ((LONG)(dst)) < 0;
  625.     bool flgn = ((LONG)(newv)) < 0;
  626.     regs.z = ((LONG)(newv)) == 0;
  627.     regs.v = (flgs != flgo) && (flgn != flgo);
  628.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  629.     regs.n = flgn != 0;
  630. }}}}}}
  631. void op_b0d8(UWORD opcode)
  632. {
  633.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  634.     ULONG dstreg = (opcode & 3584) >> 9;
  635. {{    CPTR srca = regs.a[srcreg];
  636.     WORD src = get_word(srca);
  637. {    regs.a[srcreg] += 2;
  638. {    LONG dst = regs.a[dstreg];
  639. {    ULONG newv = dst - src;
  640. {    bool flgs = ((LONG)(src)) < 0;
  641.     bool flgo = ((LONG)(dst)) < 0;
  642.     bool flgn = ((LONG)(newv)) < 0;
  643.     regs.z = ((LONG)(newv)) == 0;
  644.     regs.v = (flgs != flgo) && (flgn != flgo);
  645.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  646.     regs.n = flgn != 0;
  647. }}}}}}}
  648. void op_b0e0(UWORD opcode)
  649. {
  650.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  651.     ULONG dstreg = (opcode & 3584) >> 9;
  652. {{    regs.a[srcreg] -= 2;
  653. {    CPTR srca = regs.a[srcreg];
  654.     WORD src = get_word(srca);
  655. {    LONG dst = regs.a[dstreg];
  656. {    ULONG newv = dst - src;
  657. {    bool flgs = ((LONG)(src)) < 0;
  658.     bool flgo = ((LONG)(dst)) < 0;
  659.     bool flgn = ((LONG)(newv)) < 0;
  660.     regs.z = ((LONG)(newv)) == 0;
  661.     regs.v = (flgs != flgo) && (flgn != flgo);
  662.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  663.     regs.n = flgn != 0;
  664. }}}}}}}
  665. void op_b0e8(UWORD opcode)
  666. {
  667.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  668.     ULONG dstreg = (opcode & 3584) >> 9;
  669. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  670.     WORD src = get_word(srca);
  671. {    LONG dst = regs.a[dstreg];
  672. {    ULONG newv = dst - src;
  673. {    bool flgs = ((LONG)(src)) < 0;
  674.     bool flgo = ((LONG)(dst)) < 0;
  675.     bool flgn = ((LONG)(newv)) < 0;
  676.     regs.z = ((LONG)(newv)) == 0;
  677.     regs.v = (flgs != flgo) && (flgn != flgo);
  678.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  679.     regs.n = flgn != 0;
  680. }}}}}}
  681. void op_b0f0(UWORD opcode)
  682. {
  683.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  684.     ULONG dstreg = (opcode & 3584) >> 9;
  685. {{    CPTR srca = regs.a[srcreg];
  686.     UWORD srcdp = nextiword();
  687.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  688. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  689.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  690.     srca += srcdpr;
  691. {    WORD src = get_word(srca);
  692. {    LONG dst = regs.a[dstreg];
  693. {    ULONG newv = dst - src;
  694. {    bool flgs = ((LONG)(src)) < 0;
  695.     bool flgo = ((LONG)(dst)) < 0;
  696.     bool flgn = ((LONG)(newv)) < 0;
  697.     regs.z = ((LONG)(newv)) == 0;
  698.     regs.v = (flgs != flgo) && (flgn != flgo);
  699.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  700.     regs.n = flgn != 0;
  701. }}}}}}}}
  702. void op_b0f8(UWORD opcode)
  703. {
  704.     ULONG dstreg = (opcode & 3584) >> 9;
  705. {{    CPTR srca = (LONG)(WORD)nextiword();
  706.     WORD src = get_word(srca);
  707. {    LONG dst = regs.a[dstreg];
  708. {    ULONG newv = dst - src;
  709. {    bool flgs = ((LONG)(src)) < 0;
  710.     bool flgo = ((LONG)(dst)) < 0;
  711.     bool flgn = ((LONG)(newv)) < 0;
  712.     regs.z = ((LONG)(newv)) == 0;
  713.     regs.v = (flgs != flgo) && (flgn != flgo);
  714.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  715.     regs.n = flgn != 0;
  716. }}}}}}
  717. void op_b0f9(UWORD opcode)
  718. {
  719.     ULONG dstreg = (opcode & 3584) >> 9;
  720. {{    CPTR srca = nextilong();
  721.     WORD src = get_word(srca);
  722. {    LONG dst = regs.a[dstreg];
  723. {    ULONG newv = dst - src;
  724. {    bool flgs = ((LONG)(src)) < 0;
  725.     bool flgo = ((LONG)(dst)) < 0;
  726.     bool flgn = ((LONG)(newv)) < 0;
  727.     regs.z = ((LONG)(newv)) == 0;
  728.     regs.v = (flgs != flgo) && (flgn != flgo);
  729.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  730.     regs.n = flgn != 0;
  731. }}}}}}
  732. void op_b0fa(UWORD opcode)
  733. {
  734.     ULONG dstreg = (opcode & 3584) >> 9;
  735. {{    CPTR srca = m68k_getpc();
  736.     srca += (LONG)(WORD)nextiword();
  737. {    WORD src = get_word(srca);
  738. {    LONG dst = regs.a[dstreg];
  739. {    ULONG newv = dst - src;
  740. {    bool flgs = ((LONG)(src)) < 0;
  741.     bool flgo = ((LONG)(dst)) < 0;
  742.     bool flgn = ((LONG)(newv)) < 0;
  743.     regs.z = ((LONG)(newv)) == 0;
  744.     regs.v = (flgs != flgo) && (flgn != flgo);
  745.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  746.     regs.n = flgn != 0;
  747. }}}}}}}
  748. void op_b0fb(UWORD opcode)
  749. {
  750.     ULONG dstreg = (opcode & 3584) >> 9;
  751. {{    CPTR srca = m68k_getpc();
  752.     UWORD srcdp = nextiword();
  753.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  754. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  755.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  756.     srca += srcdpr;
  757. {    WORD src = get_word(srca);
  758. {    LONG dst = regs.a[dstreg];
  759. {    ULONG newv = dst - src;
  760. {    bool flgs = ((LONG)(src)) < 0;
  761.     bool flgo = ((LONG)(dst)) < 0;
  762.     bool flgn = ((LONG)(newv)) < 0;
  763.     regs.z = ((LONG)(newv)) == 0;
  764.     regs.v = (flgs != flgo) && (flgn != flgo);
  765.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  766.     regs.n = flgn != 0;
  767. }}}}}}}}
  768. void op_b0fc(UWORD opcode)
  769. {
  770.     ULONG dstreg = (opcode & 3584) >> 9;
  771. {{    WORD src = nextiword();
  772. {    LONG dst = regs.a[dstreg];
  773. {    ULONG newv = dst - src;
  774. {    bool flgs = ((LONG)(src)) < 0;
  775.     bool flgo = ((LONG)(dst)) < 0;
  776.     bool flgn = ((LONG)(newv)) < 0;
  777.     regs.z = ((LONG)(newv)) == 0;
  778.     regs.v = (flgs != flgo) && (flgn != flgo);
  779.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  780.     regs.n = flgn != 0;
  781. }}}}}}
  782. void op_b100(UWORD opcode)
  783. {
  784.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  785.     ULONG dstreg = (opcode & 7) >> 0;
  786. {{    BYTE src = regs.d[srcreg];
  787. {    BYTE dst = regs.d[dstreg];
  788.     src ^= dst;
  789.     regs.v = regs.c = 0;
  790.     regs.z = ((BYTE)(src)) == 0;
  791.     regs.n = ((BYTE)(src)) < 0;
  792.     regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
  793. }}}}
  794. void op_b108(UWORD opcode)
  795. {
  796.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  797.     ULONG dstreg = (opcode & 3584) >> 9;
  798. {{    CPTR srca = regs.a[srcreg];
  799.     BYTE src = get_byte(srca);
  800. {    regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
  801. {    CPTR dsta = regs.a[dstreg];
  802.     BYTE dst = get_byte(dsta);
  803. {    regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
  804. {    ULONG newv = dst - src;
  805. {    bool flgs = ((BYTE)(src)) < 0;
  806.     bool flgo = ((BYTE)(dst)) < 0;
  807.     bool flgn = ((BYTE)(newv)) < 0;
  808.     regs.z = ((BYTE)(newv)) == 0;
  809.     regs.v = (flgs != flgo) && (flgn != flgo);
  810.     regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
  811.     regs.n = flgn != 0;
  812. }}}}}}}}
  813. void op_b110(UWORD opcode)
  814. {
  815.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  816.     ULONG dstreg = (opcode & 7) >> 0;
  817. {{    BYTE src = regs.d[srcreg];
  818. {    CPTR dsta = regs.a[dstreg];
  819.     BYTE dst = get_byte(dsta);
  820.     src ^= dst;
  821.     regs.v = regs.c = 0;
  822.     regs.z = ((BYTE)(src)) == 0;
  823.     regs.n = ((BYTE)(src)) < 0;
  824.     put_byte(dsta,src);
  825. }}}}
  826. void op_b118(UWORD opcode)
  827. {
  828.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  829.     ULONG dstreg = (opcode & 7) >> 0;
  830. {{    BYTE src = regs.d[srcreg];
  831. {    CPTR dsta = regs.a[dstreg];
  832.     BYTE dst = get_byte(dsta);
  833. {    regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
  834.     src ^= dst;
  835.     regs.v = regs.c = 0;
  836.     regs.z = ((BYTE)(src)) == 0;
  837.     regs.n = ((BYTE)(src)) < 0;
  838.     put_byte(dsta,src);
  839. }}}}}
  840. void op_b120(UWORD opcode)
  841. {
  842.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  843.     ULONG dstreg = (opcode & 7) >> 0;
  844. {{    BYTE src = regs.d[srcreg];
  845. {    regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
  846. {    CPTR dsta = regs.a[dstreg];
  847.     BYTE dst = get_byte(dsta);
  848.     src ^= dst;
  849.     regs.v = regs.c = 0;
  850.     regs.z = ((BYTE)(src)) == 0;
  851.     regs.n = ((BYTE)(src)) < 0;
  852.     put_byte(dsta,src);
  853. }}}}}
  854. void op_b128(UWORD opcode)
  855. {
  856.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  857.     ULONG dstreg = (opcode & 7) >> 0;
  858. {{    BYTE src = regs.d[srcreg];
  859. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  860.     BYTE dst = get_byte(dsta);
  861.     src ^= dst;
  862.     regs.v = regs.c = 0;
  863.     regs.z = ((BYTE)(src)) == 0;
  864.     regs.n = ((BYTE)(src)) < 0;
  865.     put_byte(dsta,src);
  866. }}}}
  867. void op_b130(UWORD opcode)
  868. {
  869.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  870.     ULONG dstreg = (opcode & 7) >> 0;
  871. {{    BYTE src = regs.d[srcreg];
  872. {    CPTR dsta = regs.a[dstreg];
  873.     UWORD dstdp = nextiword();
  874.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  875. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  876.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  877.     dsta += dstdpr;
  878. {    BYTE dst = get_byte(dsta);
  879.     src ^= dst;
  880.     regs.v = regs.c = 0;
  881.     regs.z = ((BYTE)(src)) == 0;
  882.     regs.n = ((BYTE)(src)) < 0;
  883.     put_byte(dsta,src);
  884. }}}}}}
  885. void op_b138(UWORD opcode)
  886. {
  887.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  888. {{    BYTE src = regs.d[srcreg];
  889. {    CPTR dsta = (LONG)(WORD)nextiword();
  890.     BYTE dst = get_byte(dsta);
  891.     src ^= dst;
  892.     regs.v = regs.c = 0;
  893.     regs.z = ((BYTE)(src)) == 0;
  894.     regs.n = ((BYTE)(src)) < 0;
  895.     put_byte(dsta,src);
  896. }}}}
  897. void op_b139(UWORD opcode)
  898. {
  899.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  900. {{    BYTE src = regs.d[srcreg];
  901. {    CPTR dsta = nextilong();
  902.     BYTE dst = get_byte(dsta);
  903.     src ^= dst;
  904.     regs.v = regs.c = 0;
  905.     regs.z = ((BYTE)(src)) == 0;
  906.     regs.n = ((BYTE)(src)) < 0;
  907.     put_byte(dsta,src);
  908. }}}}
  909. void op_b140(UWORD opcode)
  910. {
  911.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  912.     ULONG dstreg = (opcode & 7) >> 0;
  913. {{    WORD src = regs.d[srcreg];
  914. {    WORD dst = regs.d[dstreg];
  915.     src ^= dst;
  916.     regs.v = regs.c = 0;
  917.     regs.z = ((WORD)(src)) == 0;
  918.     regs.n = ((WORD)(src)) < 0;
  919.     regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
  920. }}}}
  921. void op_b148(UWORD opcode)
  922. {
  923.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  924.     ULONG dstreg = (opcode & 3584) >> 9;
  925. {{    CPTR srca = regs.a[srcreg];
  926.     WORD src = get_word(srca);
  927. {    regs.a[srcreg] += 2;
  928. {    CPTR dsta = regs.a[dstreg];
  929.     WORD dst = get_word(dsta);
  930. {    regs.a[dstreg] += 2;
  931. {    ULONG newv = dst - src;
  932. {    bool flgs = ((WORD)(src)) < 0;
  933.     bool flgo = ((WORD)(dst)) < 0;
  934.     bool flgn = ((WORD)(newv)) < 0;
  935.     regs.z = ((WORD)(newv)) == 0;
  936.     regs.v = (flgs != flgo) && (flgn != flgo);
  937.     regs.c = ((UWORD)(src)) > ((UWORD)(dst));
  938.     regs.n = flgn != 0;
  939. }}}}}}}}
  940. void op_b150(UWORD opcode)
  941. {
  942.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  943.     ULONG dstreg = (opcode & 7) >> 0;
  944. {{    WORD src = regs.d[srcreg];
  945. {    CPTR dsta = regs.a[dstreg];
  946.     WORD dst = get_word(dsta);
  947.     src ^= dst;
  948.     regs.v = regs.c = 0;
  949.     regs.z = ((WORD)(src)) == 0;
  950.     regs.n = ((WORD)(src)) < 0;
  951.     put_word(dsta,src);
  952. }}}}
  953. void op_b158(UWORD opcode)
  954. {
  955.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  956.     ULONG dstreg = (opcode & 7) >> 0;
  957. {{    WORD src = regs.d[srcreg];
  958. {    CPTR dsta = regs.a[dstreg];
  959.     WORD dst = get_word(dsta);
  960. {    regs.a[dstreg] += 2;
  961.     src ^= dst;
  962.     regs.v = regs.c = 0;
  963.     regs.z = ((WORD)(src)) == 0;
  964.     regs.n = ((WORD)(src)) < 0;
  965.     put_word(dsta,src);
  966. }}}}}
  967. void op_b160(UWORD opcode)
  968. {
  969.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  970.     ULONG dstreg = (opcode & 7) >> 0;
  971. {{    WORD src = regs.d[srcreg];
  972. {    regs.a[dstreg] -= 2;
  973. {    CPTR dsta = regs.a[dstreg];
  974.     WORD dst = get_word(dsta);
  975.     src ^= dst;
  976.     regs.v = regs.c = 0;
  977.     regs.z = ((WORD)(src)) == 0;
  978.     regs.n = ((WORD)(src)) < 0;
  979.     put_word(dsta,src);
  980. }}}}}
  981. void op_b168(UWORD opcode)
  982. {
  983.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  984.     ULONG dstreg = (opcode & 7) >> 0;
  985. {{    WORD src = regs.d[srcreg];
  986. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  987.     WORD dst = get_word(dsta);
  988.     src ^= dst;
  989.     regs.v = regs.c = 0;
  990.     regs.z = ((WORD)(src)) == 0;
  991.     regs.n = ((WORD)(src)) < 0;
  992.     put_word(dsta,src);
  993. }}}}
  994. void op_b170(UWORD opcode)
  995. {
  996.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  997.     ULONG dstreg = (opcode & 7) >> 0;
  998. {{    WORD src = regs.d[srcreg];
  999. {    CPTR dsta = regs.a[dstreg];
  1000.     UWORD dstdp = nextiword();
  1001.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  1002. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  1003.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  1004.     dsta += dstdpr;
  1005. {    WORD dst = get_word(dsta);
  1006.     src ^= dst;
  1007.     regs.v = regs.c = 0;
  1008.     regs.z = ((WORD)(src)) == 0;
  1009.     regs.n = ((WORD)(src)) < 0;
  1010.     put_word(dsta,src);
  1011. }}}}}}
  1012. void op_b178(UWORD opcode)
  1013. {
  1014.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1015. {{    WORD src = regs.d[srcreg];
  1016. {    CPTR dsta = (LONG)(WORD)nextiword();
  1017.     WORD dst = get_word(dsta);
  1018.     src ^= dst;
  1019.     regs.v = regs.c = 0;
  1020.     regs.z = ((WORD)(src)) == 0;
  1021.     regs.n = ((WORD)(src)) < 0;
  1022.     put_word(dsta,src);
  1023. }}}}
  1024. void op_b179(UWORD opcode)
  1025. {
  1026.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1027. {{    WORD src = regs.d[srcreg];
  1028. {    CPTR dsta = nextilong();
  1029.     WORD dst = get_word(dsta);
  1030.     src ^= dst;
  1031.     regs.v = regs.c = 0;
  1032.     regs.z = ((WORD)(src)) == 0;
  1033.     regs.n = ((WORD)(src)) < 0;
  1034.     put_word(dsta,src);
  1035. }}}}
  1036. void op_b180(UWORD opcode)
  1037. {
  1038.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1039.     ULONG dstreg = (opcode & 7) >> 0;
  1040. {{    LONG src = regs.d[srcreg];
  1041. {    LONG dst = regs.d[dstreg];
  1042.     src ^= dst;
  1043.     regs.v = regs.c = 0;
  1044.     regs.z = ((LONG)(src)) == 0;
  1045.     regs.n = ((LONG)(src)) < 0;
  1046.     regs.d[dstreg] = (src);
  1047. }}}}
  1048. void op_b188(UWORD opcode)
  1049. {
  1050.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1051.     ULONG dstreg = (opcode & 3584) >> 9;
  1052. {{    CPTR srca = regs.a[srcreg];
  1053.     LONG src = get_long(srca);
  1054. {    regs.a[srcreg] += 4;
  1055. {    CPTR dsta = regs.a[dstreg];
  1056.     LONG dst = get_long(dsta);
  1057. {    regs.a[dstreg] += 4;
  1058. {    ULONG newv = dst - src;
  1059. {    bool flgs = ((LONG)(src)) < 0;
  1060.     bool flgo = ((LONG)(dst)) < 0;
  1061.     bool flgn = ((LONG)(newv)) < 0;
  1062.     regs.z = ((LONG)(newv)) == 0;
  1063.     regs.v = (flgs != flgo) && (flgn != flgo);
  1064.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1065.     regs.n = flgn != 0;
  1066. }}}}}}}}
  1067. void op_b190(UWORD opcode)
  1068. {
  1069.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1070.     ULONG dstreg = (opcode & 7) >> 0;
  1071. {{    LONG src = regs.d[srcreg];
  1072. {    CPTR dsta = regs.a[dstreg];
  1073.     LONG dst = get_long(dsta);
  1074.     src ^= dst;
  1075.     regs.v = regs.c = 0;
  1076.     regs.z = ((LONG)(src)) == 0;
  1077.     regs.n = ((LONG)(src)) < 0;
  1078.     put_long(dsta,src);
  1079. }}}}
  1080. void op_b198(UWORD opcode)
  1081. {
  1082.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1083.     ULONG dstreg = (opcode & 7) >> 0;
  1084. {{    LONG src = regs.d[srcreg];
  1085. {    CPTR dsta = regs.a[dstreg];
  1086.     LONG dst = get_long(dsta);
  1087. {    regs.a[dstreg] += 4;
  1088.     src ^= dst;
  1089.     regs.v = regs.c = 0;
  1090.     regs.z = ((LONG)(src)) == 0;
  1091.     regs.n = ((LONG)(src)) < 0;
  1092.     put_long(dsta,src);
  1093. }}}}}
  1094. void op_b1a0(UWORD opcode)
  1095. {
  1096.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1097.     ULONG dstreg = (opcode & 7) >> 0;
  1098. {{    LONG src = regs.d[srcreg];
  1099. {    regs.a[dstreg] -= 4;
  1100. {    CPTR dsta = regs.a[dstreg];
  1101.     LONG dst = get_long(dsta);
  1102.     src ^= dst;
  1103.     regs.v = regs.c = 0;
  1104.     regs.z = ((LONG)(src)) == 0;
  1105.     regs.n = ((LONG)(src)) < 0;
  1106.     put_long(dsta,src);
  1107. }}}}}
  1108. void op_b1a8(UWORD opcode)
  1109. {
  1110.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1111.     ULONG dstreg = (opcode & 7) >> 0;
  1112. {{    LONG src = regs.d[srcreg];
  1113. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  1114.     LONG dst = get_long(dsta);
  1115.     src ^= dst;
  1116.     regs.v = regs.c = 0;
  1117.     regs.z = ((LONG)(src)) == 0;
  1118.     regs.n = ((LONG)(src)) < 0;
  1119.     put_long(dsta,src);
  1120. }}}}
  1121. void op_b1b0(UWORD opcode)
  1122. {
  1123.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1124.     ULONG dstreg = (opcode & 7) >> 0;
  1125. {{    LONG src = regs.d[srcreg];
  1126. {    CPTR dsta = regs.a[dstreg];
  1127.     UWORD dstdp = nextiword();
  1128.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  1129. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  1130.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  1131.     dsta += dstdpr;
  1132. {    LONG dst = get_long(dsta);
  1133.     src ^= dst;
  1134.     regs.v = regs.c = 0;
  1135.     regs.z = ((LONG)(src)) == 0;
  1136.     regs.n = ((LONG)(src)) < 0;
  1137.     put_long(dsta,src);
  1138. }}}}}}
  1139. void op_b1b8(UWORD opcode)
  1140. {
  1141.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1142. {{    LONG src = regs.d[srcreg];
  1143. {    CPTR dsta = (LONG)(WORD)nextiword();
  1144.     LONG dst = get_long(dsta);
  1145.     src ^= dst;
  1146.     regs.v = regs.c = 0;
  1147.     regs.z = ((LONG)(src)) == 0;
  1148.     regs.n = ((LONG)(src)) < 0;
  1149.     put_long(dsta,src);
  1150. }}}}
  1151. void op_b1b9(UWORD opcode)
  1152. {
  1153.     ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
  1154. {{    LONG src = regs.d[srcreg];
  1155. {    CPTR dsta = nextilong();
  1156.     LONG dst = get_long(dsta);
  1157.     src ^= dst;
  1158.     regs.v = regs.c = 0;
  1159.     regs.z = ((LONG)(src)) == 0;
  1160.     regs.n = ((LONG)(src)) < 0;
  1161.     put_long(dsta,src);
  1162. }}}}
  1163. void op_b1c0(UWORD opcode)
  1164. {
  1165.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1166.     ULONG dstreg = (opcode & 3584) >> 9;
  1167. {{    LONG src = regs.d[srcreg];
  1168. {    LONG dst = regs.a[dstreg];
  1169. {    ULONG newv = dst - src;
  1170. {    bool flgs = ((LONG)(src)) < 0;
  1171.     bool flgo = ((LONG)(dst)) < 0;
  1172.     bool flgn = ((LONG)(newv)) < 0;
  1173.     regs.z = ((LONG)(newv)) == 0;
  1174.     regs.v = (flgs != flgo) && (flgn != flgo);
  1175.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1176.     regs.n = flgn != 0;
  1177. }}}}}}
  1178. void op_b1c8(UWORD opcode)
  1179. {
  1180.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1181.     ULONG dstreg = (opcode & 3584) >> 9;
  1182. {{    LONG src = regs.a[srcreg];
  1183. {    LONG dst = regs.a[dstreg];
  1184. {    ULONG newv = dst - src;
  1185. {    bool flgs = ((LONG)(src)) < 0;
  1186.     bool flgo = ((LONG)(dst)) < 0;
  1187.     bool flgn = ((LONG)(newv)) < 0;
  1188.     regs.z = ((LONG)(newv)) == 0;
  1189.     regs.v = (flgs != flgo) && (flgn != flgo);
  1190.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1191.     regs.n = flgn != 0;
  1192. }}}}}}
  1193. void op_b1d0(UWORD opcode)
  1194. {
  1195.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1196.     ULONG dstreg = (opcode & 3584) >> 9;
  1197. {{    CPTR srca = regs.a[srcreg];
  1198.     LONG src = get_long(srca);
  1199. {    LONG dst = regs.a[dstreg];
  1200. {    ULONG newv = dst - src;
  1201. {    bool flgs = ((LONG)(src)) < 0;
  1202.     bool flgo = ((LONG)(dst)) < 0;
  1203.     bool flgn = ((LONG)(newv)) < 0;
  1204.     regs.z = ((LONG)(newv)) == 0;
  1205.     regs.v = (flgs != flgo) && (flgn != flgo);
  1206.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1207.     regs.n = flgn != 0;
  1208. }}}}}}
  1209. void op_b1d8(UWORD opcode)
  1210. {
  1211.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1212.     ULONG dstreg = (opcode & 3584) >> 9;
  1213. {{    CPTR srca = regs.a[srcreg];
  1214.     LONG src = get_long(srca);
  1215. {    regs.a[srcreg] += 4;
  1216. {    LONG dst = regs.a[dstreg];
  1217. {    ULONG newv = dst - src;
  1218. {    bool flgs = ((LONG)(src)) < 0;
  1219.     bool flgo = ((LONG)(dst)) < 0;
  1220.     bool flgn = ((LONG)(newv)) < 0;
  1221.     regs.z = ((LONG)(newv)) == 0;
  1222.     regs.v = (flgs != flgo) && (flgn != flgo);
  1223.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1224.     regs.n = flgn != 0;
  1225. }}}}}}}
  1226. void op_b1e0(UWORD opcode)
  1227. {
  1228.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1229.     ULONG dstreg = (opcode & 3584) >> 9;
  1230. {{    regs.a[srcreg] -= 4;
  1231. {    CPTR srca = regs.a[srcreg];
  1232.     LONG src = get_long(srca);
  1233. {    LONG dst = regs.a[dstreg];
  1234. {    ULONG newv = dst - src;
  1235. {    bool flgs = ((LONG)(src)) < 0;
  1236.     bool flgo = ((LONG)(dst)) < 0;
  1237.     bool flgn = ((LONG)(newv)) < 0;
  1238.     regs.z = ((LONG)(newv)) == 0;
  1239.     regs.v = (flgs != flgo) && (flgn != flgo);
  1240.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1241.     regs.n = flgn != 0;
  1242. }}}}}}}
  1243. void op_b1e8(UWORD opcode)
  1244. {
  1245.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1246.     ULONG dstreg = (opcode & 3584) >> 9;
  1247. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  1248.     LONG src = get_long(srca);
  1249. {    LONG dst = regs.a[dstreg];
  1250. {    ULONG newv = dst - src;
  1251. {    bool flgs = ((LONG)(src)) < 0;
  1252.     bool flgo = ((LONG)(dst)) < 0;
  1253.     bool flgn = ((LONG)(newv)) < 0;
  1254.     regs.z = ((LONG)(newv)) == 0;
  1255.     regs.v = (flgs != flgo) && (flgn != flgo);
  1256.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1257.     regs.n = flgn != 0;
  1258. }}}}}}
  1259. void op_b1f0(UWORD opcode)
  1260. {
  1261.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1262.     ULONG dstreg = (opcode & 3584) >> 9;
  1263. {{    CPTR srca = regs.a[srcreg];
  1264.     UWORD srcdp = nextiword();
  1265.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  1266. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  1267.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  1268.     srca += srcdpr;
  1269. {    LONG src = get_long(srca);
  1270. {    LONG dst = regs.a[dstreg];
  1271. {    ULONG newv = dst - src;
  1272. {    bool flgs = ((LONG)(src)) < 0;
  1273.     bool flgo = ((LONG)(dst)) < 0;
  1274.     bool flgn = ((LONG)(newv)) < 0;
  1275.     regs.z = ((LONG)(newv)) == 0;
  1276.     regs.v = (flgs != flgo) && (flgn != flgo);
  1277.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1278.     regs.n = flgn != 0;
  1279. }}}}}}}}
  1280. void op_b1f8(UWORD opcode)
  1281. {
  1282.     ULONG dstreg = (opcode & 3584) >> 9;
  1283. {{    CPTR srca = (LONG)(WORD)nextiword();
  1284.     LONG src = get_long(srca);
  1285. {    LONG dst = regs.a[dstreg];
  1286. {    ULONG newv = dst - src;
  1287. {    bool flgs = ((LONG)(src)) < 0;
  1288.     bool flgo = ((LONG)(dst)) < 0;
  1289.     bool flgn = ((LONG)(newv)) < 0;
  1290.     regs.z = ((LONG)(newv)) == 0;
  1291.     regs.v = (flgs != flgo) && (flgn != flgo);
  1292.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1293.     regs.n = flgn != 0;
  1294. }}}}}}
  1295. void op_b1f9(UWORD opcode)
  1296. {
  1297.     ULONG dstreg = (opcode & 3584) >> 9;
  1298. {{    CPTR srca = nextilong();
  1299.     LONG src = get_long(srca);
  1300. {    LONG dst = regs.a[dstreg];
  1301. {    ULONG newv = dst - src;
  1302. {    bool flgs = ((LONG)(src)) < 0;
  1303.     bool flgo = ((LONG)(dst)) < 0;
  1304.     bool flgn = ((LONG)(newv)) < 0;
  1305.     regs.z = ((LONG)(newv)) == 0;
  1306.     regs.v = (flgs != flgo) && (flgn != flgo);
  1307.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1308.     regs.n = flgn != 0;
  1309. }}}}}}
  1310. void op_b1fa(UWORD opcode)
  1311. {
  1312.     ULONG dstreg = (opcode & 3584) >> 9;
  1313. {{    CPTR srca = m68k_getpc();
  1314.     srca += (LONG)(WORD)nextiword();
  1315. {    LONG src = get_long(srca);
  1316. {    LONG dst = regs.a[dstreg];
  1317. {    ULONG newv = dst - src;
  1318. {    bool flgs = ((LONG)(src)) < 0;
  1319.     bool flgo = ((LONG)(dst)) < 0;
  1320.     bool flgn = ((LONG)(newv)) < 0;
  1321.     regs.z = ((LONG)(newv)) == 0;
  1322.     regs.v = (flgs != flgo) && (flgn != flgo);
  1323.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1324.     regs.n = flgn != 0;
  1325. }}}}}}}
  1326. void op_b1fb(UWORD opcode)
  1327. {
  1328.     ULONG dstreg = (opcode & 3584) >> 9;
  1329. {{    CPTR srca = m68k_getpc();
  1330.     UWORD srcdp = nextiword();
  1331.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  1332. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  1333.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  1334.     srca += srcdpr;
  1335. {    LONG src = get_long(srca);
  1336. {    LONG dst = regs.a[dstreg];
  1337. {    ULONG newv = dst - src;
  1338. {    bool flgs = ((LONG)(src)) < 0;
  1339.     bool flgo = ((LONG)(dst)) < 0;
  1340.     bool flgn = ((LONG)(newv)) < 0;
  1341.     regs.z = ((LONG)(newv)) == 0;
  1342.     regs.v = (flgs != flgo) && (flgn != flgo);
  1343.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1344.     regs.n = flgn != 0;
  1345. }}}}}}}}
  1346. void op_b1fc(UWORD opcode)
  1347. {
  1348.     ULONG dstreg = (opcode & 3584) >> 9;
  1349. {{    LONG src = nextilong();
  1350. {    LONG dst = regs.a[dstreg];
  1351. {    ULONG newv = dst - src;
  1352. {    bool flgs = ((LONG)(src)) < 0;
  1353.     bool flgo = ((LONG)(dst)) < 0;
  1354.     bool flgn = ((LONG)(newv)) < 0;
  1355.     regs.z = ((LONG)(newv)) == 0;
  1356.     regs.v = (flgs != flgo) && (flgn != flgo);
  1357.     regs.c = ((ULONG)(src)) > ((ULONG)(dst));
  1358.     regs.n = flgn != 0;
  1359. }}}}}}
  1360.